package edu.dayu.db;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource {
    private static final ThreadLocal<String> DATA_SOURCE_KEY = new ThreadLocal<>();

    /**
     * 整个动态数据源的逻辑
     * 1、初始化时，加载默认数据源以及备用的数据源
     * 2、当请求过来时，调用 set 方法，把路由放入该本地线程变量
     * 3、当连接数据库时，会调用行代码，通过本地线程变量里面存储的路由来获取使用的数据源。
     */
    @Override
    protected Object determineCurrentLookupKey() {
        return DATA_SOURCE_KEY.get();
    }

    public static void setDataSource(String dataSource){
        DATA_SOURCE_KEY.set(dataSource);
    }

}
